#pragma once

#include "Global.h"
#include "Jeu.h"
#include "Monde.h"
#include "Link.h"

class Jeu;
class Monde;
class Link;

class Facade
{
    public :
		Facade( Jeu& oJeu );
		void setLink ( Link* oLink   ) { this->oLink  = oLink;  }
		void setMonde( Monde* oMonde ) { this->oMonde = oMonde; }

		void veutRamasser( int x, int y, TypeDirection dir, TypeGant type, TRecCol& recCol );
		TypeObjet soulever( int x, int y, TypeDirection dir, TypeGant type, TRecCol& recCol );
		void lancerObjet( int x, int y, TypeDirection dir, TypeObjet type );

		TypeTuile getTypeTuile( int x, int y, SDL_Rect& recCol );

		void tirerFleche( int x, int y, TypeDirection dir, TypeProjectile type );
		void poserBombe( int x, int y );
		void tirerGrappin( int x, int y, TypeDirection dir );
		void tirerMagie( int x, int y, TypeDirection dir );
		void allumerLanterne( int x, int y, TypeDirection dir );
		void boire( TypeEquipement bouteille );

		void setTypeAnimLink(TypeAnim type);
		int getLargMondePixel();
		int getHautMondePixel();
		int getLargMonde();
		int getHautMonde();
		int getLargCarte();
		int getHautCarte();

		//Pour l'affichage du statut
		bool LinkACetEquipement (TypeEquipement equip);

		int getLinkQteVie();
		int getLinkQteVieMax();
		int getLinkQteMagie();
		int getLinkQteMagieMax();
		int getLinkQteFleches();
		int getLinkQteFlechesMax();
		int getLinkQteBombes();
		int getLinkQteBombesMax();
		int getLinkQteRubis();
		int getLinkQteRubisMax();
		int getLinkQteCles();

		TypeEquipement getLinkEquipActif();
		TypeArc  getLinkTypeArc();
		TypeGant getLinkTypeGant();

		~Facade();

	private :

		Jeu&   oJeu;
		Monde* oMonde;
		Link*  oLink;
};
